package com.example.gateway.designPattern.strategy;

/**
 * @ClassName: Client
 * @Description:
 * @Author: YourName
 * @Date: 2024/12/31
 */

public class Client {

    public static void main(String[] args) {

        /*
        *  策略模式
        *      策略模式定义了一系列算法，并将每一个算法封装起来，使它们可以相互替换，且算法的变化不会影响到使用算法的客户。
        *      策略模式属于对象的行为模式。策略模式主要用来解决在有多种算法相似的情况下，使用if-else所带来的麻烦。
        *
        *  优点： 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
           缺点： 1、策略类会增多。 2、所有策略类都需要对外暴露。
        *
        *
        *
        *
        *
        * */

        AddStrategy addStrategy = new AddStrategy();

        SubstractStrategy subStrategy = new SubstractStrategy();


        Environment environment = new Environment(addStrategy);
        environment.calc(4,6);

        Environment environment2 = new Environment(subStrategy);
        environment2.calc(4,6);



    }
}
